home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 8
/
FM Towns Free Software Collection 8.iso
/
t_os
/
diskdup
/
diskdup.h
< prev
next >
Wrap
Text File
|
1994-06-01
|
5KB
|
146 lines
/********************************************************************
* *
* DISKDUP *
* *
* オンメモリ型 DISKCOPY *
* *
* diskdup.exp *
* *
* for FM-TOWNS *
* *
* Copyright (c) ちにゃと & Tymic 1992. 1993. *
* *
* メイン ヘッダー *
* *
********************************************************************/
typedef unsigned char uchar; /* 無符号 8 bit */
typedef unsigned short ushort; /* 無符号 16 bit */
typedef unsigned int uint; /* 無符号 32 bit */
typedef unsigned long ulong; /* 無符号 32 bit */
/********************************************************************
定数定義
*********************************************************************/
#define VER "0.90a" /* バージョン 番号 */
#define OK 0 /* 正常 */
#define NG -1 /* 異常 */
#define TRUE 1 /* 真 */
#define FALSE 0 /* 偽 */
#define MAXHEAD 2 /* ヘッド 番号最大値 */
#define MAXCYL_2HD 77 /* 2HD シリンダ 番号最大値 */
#define MAXCYL_2HC 80 /* 2HC シリンダ 番号最大値 */
#define MAXCYL_2DD 80 /* 2DD シリンダ 番号最大値 */
#define MAXSEC_12 8 /* 1.2M 2HD セクタ 番号最大値 */
#define MAXSEC_720 9 /* 720K 2DD セクタ 番号最大値 */
#define MAXSEC_640 8 /* 640K 2DD セクタ 番号最大値 */
#define MAXSEC_12C 15 /* 1.2M 2HC セクタ 番号最大値 */
#define MAXSEC_1440 18 /* 1.44 2HC セクタ 番号最大値 */
#define SECLEN512 512 /* セクタ レングス 512 */
#define SECLEN1024 1024 /* セクタ レングス 1024 */
#define MODE1_12 0x0003 /* 1.2M 2HD ドライブ モード 1 */
#define MODE2_12 0x0208 /* 1.2M 2HD ドライブ モード 2 */
#define MODE1_720 0x0012 /* 720K 2DD ドライブ モード 1 */
#define MODE2_720 0x0209 /* 720K 2DD ドライブ モード 2 */
#define MODE1_640 0x0012 /* 640K 2DD ドライブ モード 1 */
#define MODE2_640 0x0208 /* 640K 2DD ドライブ モード 2 */
#define MODE1_12C 0x0002 /* 1.2M 2HC ドライブ モード 1 */
#define MODE2_12C 0x020F /* 1.2M 2HC ドライブ モード 2 */
#define MODE1_1440 0x0042 /* 1.44M 2HC ドライブ モード 1 */
#define MODE2_1440 0x0212 /* 1.44M 2HC ドライブ モード 2 */
#define FD0_DRVNO 0x0020 /* フロッピー デバイス 0 */
#define FD1_DRVNO 0x0021 /* フロッピー デバイス 1 */
#define DISKSIZE SECLEN1024 * \
MAXSEC_12 * \
MAXCYL_2HD * \
MAXHEAD /* ディスク 読み込み バッファ レングス */
enum _DISKTYPE { /* フロッピー ディスク 種別番号 */
TYPE_NOT = 0, /* 未対応 ディスク */
TYPE_2HD_12, /* 1.2M 2HD */
TYPE_2DD_720, /* 720K 2DD */
TYPE_2DD_640, /* 640K 2DD */
TYPE_2HC_12, /* 1.2M 2HC */
TYPE_END, /* ダミー */
};
enum _ERRCODE { /* エラー メッセージ 番号 */
NOERR = 0, /* エラー 無し 正常終了 */
ERRMODESET, /* モード セット エラー */
ERRDISKREAD, /* ディスク リード エラー */
ERRDISKWRITE, /* ディスク ライト エラー */
ERRDISKSET, /* ディスク 設定 エラー */
ERRDISKTYPE, /* 未対応 ディスク エラー */
ERRNOTDISK, /* ドライブ ノット レディー */
ERRPROTECT, /* 書き込み禁止 */
ERRFORMAT, /* フォ-マット エラ- */
};
#define PreAmblLength 146 /* プレ アンブル データ レングス */
#define PosAmblLength 600 /* ポスト アンブル データ レングス */
#define SecData1024Length 1200 /* 1024 セクタ データ レングス */
#define SecData512Length 688 /* 512 セクタ データ レングス */
#define RETRYMAX 7 /* エラー リトライ 回数 */
/********************************************************************
構造体定義
*********************************************************************/
typedef struct _FORMPARA { /* フォーマット データ 圧縮形式 */
int fdata; /* フォーマット データ */
int cnt; /* 展開 レングス */
} FORMPARA;
typedef struct _IntParaBlk { /* リアル モード 割り込み発行 パラメータ ブロック */
ushort intno; /* 割り込み番号 */
ushort rds; /* リアル モード ds */
ushort res; /* リアル モード es */
ushort rfs; /* リアル モード fs */
ushort rgs; /* リアル モード gs */
uint reax; /* リアル モード eax */
uint redx; /* リアル モード edx */
} IntParaBlk;
/********************************************************************
外部参照
*********************************************************************/
#ifndef __PRGMAIN__
extern char Title1[]; /* タイトル 1 */
extern char Title2[]; /* タイトル 2 */
extern char *ErrMsgTbl[]; /* エラー メッセージ テーブル */
extern int option; /* オプション データ */
#endif
/********************************************************************
プロトタイプ
*********************************************************************/
void main( int, char ** ); /* メイン 処理 */
void PrgExit1( void ); /* プログラム 終了処理 */
void PrgExit2( void ); /* プログラム 終了処理 */
void CopyPrgMain( void ); /* コピー プログラム メイン */
int SetDiskDrvMode( int, int ); /* ドライブ モード 設定 */
int ReadDiskAll( int, char *, int ); /* ディスク 読み込み */
int WriteDiskAll( int, char *, int ); /* ディスク 書き込み */
int TrackFormat( int, int, int ); /* 1 トラック フォーマット */
void MakeFormData( int, int, int ); /* フォーマット データ 作成 */
int ChkFormatType( int ); /* フォーマット タイプ チェック */
/* end of file */